package cn.com.headfree.rzgl.service.impl;

import cn.com.headfree.base.common.MyConstant;
import cn.com.headfree.entity.IscUser;
import cn.com.headfree.entity.TOrgDept;
import cn.com.headfree.entity.isc.User;
import cn.com.headfree.rzgl.dao.IRzglDao;
import cn.com.headfree.rzgl.service.IRzglService;
import com.gta.edu.sdk.common.dto.Page;
import com.gta.edu.sdk.util.StringUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;


@Service("rzglService")
public class RzglServiceImpl implements IRzglService {

    @Autowired
    public IRzglDao rzglDao;

    /**
     * 查询人员信息
     * @param page
     * @param iscUser
     * @param user
     */
    @Override
    public void searchUserList(Page<IscUser> page, IscUser iscUser, User user){
        if(!StringUtil.isNullOrEmpty(iscUser.getBaseorgId())){
            //获取部门及其子部门信息
            rzglDao.searchUserList(page, iscUser);
        }
    }

    /**
     * 查询单位树信息
     * @param orgDept
     * @param user
     * @return
     */
    @Override
    public List<TOrgDept> searchDeptList(TOrgDept orgDept, User user){
        List<TOrgDept> result = new ArrayList<>();
        //表示第一次进入
        if(StringUtil.isNullOrEmpty(orgDept.getId())){
            if(MyConstant.ROLE_LEVE_SHEN.equals(user.getRemark())){
                orgDept.setId(MyConstant.DEPT_TOP_ID);
            }else {
                if(user.getIsHeadDept() != null && user.getIsHeadDept() == 0){//本部可以看到全公司的人
                    orgDept.setId(user.getpId());
                }else{
                    orgDept.setId(user.getBaseOrgId());
                }
            }
            //表示非普通用户
            if(!StringUtil.isNullOrEmpty(orgDept.getId())){
                result = rzglDao.searchTopDept(orgDept);
            }
        }else{
            result = rzglDao.searchDeptList(orgDept);
        }

        return result;
    }

    @Override
    public List<TOrgDept> searchDeptByUser(TOrgDept orgDept, User user){
        List<TOrgDept> result = new ArrayList<>();
        orgDept.setId(user.getBaseOrgId());
        result = rzglDao.searchDeptList(orgDept);
        return result;
    }

    /**
     * 获取树部门ID
     * 如果是省管理员 返回安徽省电网ID
     * 如果是单位管理员 返回单位ID
     * @param user
     */
    public String getTopDeptId(User user){
        if(MyConstant.USER_ROLETYPE_SHEN.equals(user.getSapHrCode())){//省管理员
            return MyConstant.DEPT_TOP_ID;
        }else if(MyConstant.USER_ROLETYPE_DANWEI.equals(user.getSapHrCode())){//单位管理员
            return user.getBaseOrgId();
        }
        return null;
    }

}
